第1章 LangChain生态系统概览 1
1.1 LangChain生态系统的布局 2
1.1.1 LangChain软件包的组织方式 4
1.1.2 LangChain核心功能模块概览 5
1.2 从Chat LangChain应用看生态实践 10
1.2.1 读取和加载私域数据 11
1.2.2 数据预处理及存储 13
1.2.3 基于用户问题的数据检索 14
1.2.4 基于检索内容的应答生成 14
1.2.5 提供附带中间结果的流式输出 16
1.2.6 推理链的服务化和应用化 17
1.2.7 追逐生产环境的调研链和指标 18
第2章 环境准备 21
2.1 在VS Code中开启并使用Jupyter Notebook 23
2.2 通过python-dotenv隐式加载环境变量 24
2.3 使用Ollama加载大语言模型 25
第3章 角色扮演写作实战 28
3.1 场景代码示例 29
3.2 场景代码解析 30
3.3 Model I/O三元组 31
3.3.1 Prompt模块 31
3.3.2 Model模块 35
3.3.3 Output Parser模块 36
3.4 LCEL语法解析:基础语法和接口 40
3.4.1 Runnable对象的标准接口 40
3.4.2 Runnable对象的输入和输出 41
3.4.3 Runnable对象的动态参数绑定 41
3.4.4 审查链路结构和提示词 43
3.5 Runnable Sequence的基座:Model I/O三元组对象 44
第4章 多媒体资源的摘要实战 46
4.1 场景代码示例 47
4.2 场景代码解析 50
4.3 Document的加载与处理 51
4.3.1 文档加载器 51
4.3.2 文档转换器 51
4.3.3 文本分割器 52
4.4 3种核心文档处理策略 56
4.4.1 Stuff策略:直接合并 56
4.4.2 MapReduce策略:分而治之 58
4.4.3 Refine策略:循序迭代 61
4.5 LCEL语法解析:RunnableLambda和RunnableMap 65
4.5.1 RunnableLambda 65
4.5.2 RunnableMap 68
第5章 面向文档的对话机器人实战 70
5.1 场景代码示例 71
5.2 场景代码解析 74
5.3 RAG简介 75
5.3.1 什么是RAG 75
5.3.2 RAG的工作原理 77
5.4 LangChain中的RAG实现 78
5.5 Retriever模块的实用算法概览 80
5.5.1 检索器融合 82
5.5.2 上下文压缩 83
5.5.3 自组织查询 85
5.5.4 时间戳权重 97
5.5.5 父文档回溯 99
5.5.6 多维度回溯 103
5.5.7 多角度查询 110
5.6 Indexing API简介 113
5.6.1 删除模式 114
5.6.2 使用场景和方式 115
5.7 Chain模块和Memory模块 119
5.7.1 通过Retrieval QA Chain实现文档问答 120
5.7.2 通过Conversational Retrieval QA Chain实现会话文档问答 121
5.7.3 通过Memory模块为对话过程保驾护航 122
5.8 长上下文记忆系统的构建 124
5.8.1 会话记忆系统 125
5.8.2 语义记忆系统 125
5.8.3 生成式Agent系统 126
5.8.4 长上下文记忆系统的构建要点 126
5.9 LCEL语法解析:RunnablePassthrough 128
5.10 Runnable Sequence的数据连接:Retriever对象 130
第6章 自然语言交流的搜索引擎实战 134
6.1 场景代码示例 136
6.2 场景代码解析 137
6.3 Agent简介 138
6.3.1 Agent和Chain的区别 139
6.3.2 Agent的思考链 140
6.4 Agent的工具箱 145
6.5 面向OpenAI的Agent实现 148
6.6 Callback回调系统简介 153
6.7 Callback和verbose的关系 158
6.8 LCEL语法解析:RunnableBranch和链路异常回退机制 159
6.8.1 RunnableBranch 159
6.8.2 链路异常回退机制 162
6.9 Runnable Sequence的扩展:外部工具的接入 164
6.10 LangGraph:以图的方式构建Agent 165
第7章 快速构建交互式LangChain应用原型 170
7.1 Streamlit及免费云服务“全家桶” 172
7.1.1 环境准备 172
7.1.2 极简开发 172
7.1.3 实时交互 174
7.1.4 云上部署 177
7.2 使用Chainlit快速构建交互式文档对话机器人 179
7.2.1 环境准备 179
7.2.2 简单示例 180
7.2.3 交互式文档对话机器人 184
第8章 使用生态工具加速LangChain应用开发 195
8.1 LangSmith:全面监控LangChain应用 197
8.1.1 追踪LangChain应用 199
8.1.2 数据集与评估 202
8.1.3 LangChain Hub 204
8.2 LangServe:将LangChain应用部署至Web API 207
8.2.1 快速开始 208
8.2.2 原理详解 211
8.3 Templates & CLI:从模板和脚手架快速启动 214
8.3.1 LangChain Templates 214
8.3.2 LangChain CLI命令行工具 215
8.3.3 优化升级 218
第9章 我们的“大世界” 219
9.1 大语言模型应用开发框架的“你我他” 220
9.1.1 三大框架的简介 221
9.1.2 三大框架的特性 222
9.1.3 三大框架的对比 223
9.2 从LangChain Hub看提示词的丰富应用场景 224
9.2.1 场景写作 225
9.2.2 信息总结 228
9.2.3 信息提取 230
9.2.4 代码分析和评审 232
9.2.5 提示优化 234
9.2.6 RAG 235
9.2.7 自然语言SQL查询 236
9.2.8 评价打分 237
9.2.9 合成数据生成 238
9.2.10 思考链 240
9.3 浅谈通用人工智能的认知架构的发展 242